﻿using System;
using System.Configuration;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using System.Web.Security;
using Ext.Net;
using Utpl.Syllabus.Framework;
using Utpl.Syllabus.Framework.Common;
using Utpl.Syllabus.Framework.Core;
using Utpl.Syllabus.Framework.Web.UI;
using Utpl.Syllabus.Nucleo.BL;
using Utpl.Syllabus.Recursos.Web;

namespace Utpl.Syllabus.Reconocimiento.Web
{
    public partial class ucRolesUsuario : SyUserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }

        protected void Aceptar_Click(object sender, DirectEventArgs e)
        {
            int rolId ;//= Convert.ToInt32(e.ExtraParams["RolId"]);
            int.TryParse(e.ExtraParams["RolId"], out rolId);
            //Comprueba que el rol le pertenesca al usuario que ingreso
            var resp= SyllabusApplication.Instance().GetCurrentUser().Roles.Count(r => r.RolId == rolId);
            var rol = SyllabusApplication.Instance().GetCurrentUser().Roles.FirstOrDefault(r => r.RolId == rolId);
            if (resp==1)
            {
                var rolesEqv = ConfigurationManager.AppSettings["RolesEquivalencias"].Split(',');
                var rolesRec = ConfigurationManager.AppSettings["RolesReconocimiento"].Split(',');
                var autEqv = rolesEqv.Count(p => p == rol.Codigo) ;
                var autRec = rolesRec.Count(p => p == rol.Codigo);
                if (autEqv + autRec >= 1)
                {
                    Session[ConstantesBL.ROL] = rolId;
                    Response.Redirect(FormsAuthentication.DefaultUrl);
                }
                else
                {
                    ExtNet.Js.Call("Sy.showMsgAlerta", "Su rol no esta autorizado para ingresar a esta funcionalidad");
                }
            }
            else
            {
                SessionGuard.AgainstNullSession(ConstantesBL.SESIONID);
                SyPrincipal.Logout();

                Response.Redirect(FormsAuthentication.LoginUrl);
            }

        }

        protected void Cancelar_Click(object sender, DirectEventArgs e)
        {
            SessionGuard.AgainstNullSession(ConstantesBL.SESIONID);
            SyPrincipal.Logout();

            Response.Redirect(FormsAuthentication.LoginUrl);
        }

        public void CargarRoles()
        {
            try
            {
                UsuarioRolList roles = SyllabusApplication.Instance().GetCurrentUser().Roles;
                stoRoles.DataSource = roles;
                stoRoles.DataBind();
            }
            catch (Exception ex)
            {
                HandleExceptionResult resultado = ManejadorExcepciones.HandleException(ex);
                ManejadorMensajes.Excepcion(resultado);
            }
        }
    }
}